package com.jfs.qy.entity.request;

import com.alibaba.fastjson2.annotation.JSONField;
import lombok.Data;

import java.io.Serializable;

/**
 * @Description 查询告警事件请数据对象
 * @E-mail cwm3412638@163.com
 * @Author cwm
 * @Date 2022/11/4
 */
@Data
public class SearchAlarmEventRequestData implements Serializable {
    /**
     * 可选，不输入时，板端check全部报警信息，并输出reader_id
     * 是否必传 否
     */
    @JSONField(name = "reader_id")
    private Integer readerId;
    /**
     * 可选，不输入时，板端check全部报警信息，并输出reader_id。
     * 是否必传 否
     */
    @JSONField(name = "sequence")
    private Integer sequence;
    /**
     * 可选，不输入时，板端check全部报警信息，并输出reader_id。
     * 是否必传 否
     */
    @JSONField(name = "lap_number")
    private Integer lapNumber;
    /**
     * 可选，不输入时，不传输抓拍元数据、过线统计、排队长度和人群密度的实时数据、离岗检测实时数据
     * 是否必传 否
     */
    @JSONField(name = "subscribe_ai_metadata")
    private Boolean subscribeAiMetadata;
    /**
     * 可选，不输入时，不传输智能告警事件
     * 是否必传 否
     */
    @JSONField(name = "subscribe_intelligence")
    private Boolean subscribeIntelligence;
    /**
     * 可选，不输入时，不传输告警缩略图
     * 是否必传 否
     */
    @JSONField(name = "need_background_img")
    private Boolean needBackgroundImg;

    /**
     * 私有构造方法
     *
     * @param builder
     */
    private SearchAlarmEventRequestData( Builder builder) {
        this.readerId = builder.readerId;
        this.sequence = builder.sequence;
        this.lapNumber = builder.lapNumber;
        this.subscribeAiMetadata = builder.subscribeAiMetadata;
        this.subscribeIntelligence = builder.subscribeIntelligence;
        this.needBackgroundImg = builder.needBackgroundImg;
    }

    /**
     * 建造对象
     */
    public static final class Builder {
        private Integer readerId;
        private Integer sequence;
        private Integer lapNumber;
        private Boolean subscribeAiMetadata;
        private Boolean subscribeIntelligence;
        private Boolean needBackgroundImg;

        public Builder() {
        }

        public Builder readerId(Integer readerId) {
            this.readerId = readerId;
            return this;
        }

        public Builder sequence(Integer sequence) {
            this.sequence = sequence;
            return this;
        }

        public Builder lapNumber(Integer lapNumber) {
            this.lapNumber = lapNumber;
            return this;
        }

        public Builder aiMetadata(Boolean subscribeAiMetadata) {
            this.subscribeAiMetadata = subscribeAiMetadata;
            return this;
        }

        public Builder intelligence(Boolean subscribeIntelligence) {
            this.subscribeIntelligence = subscribeIntelligence;
            return this;
        }


        public Builder needBackgroundImg(Boolean needBackgroundImg) {
            this.needBackgroundImg = needBackgroundImg;
            return this;
        }

        public SearchAlarmEventRequestData build() {
            return new SearchAlarmEventRequestData(this);
        }
    }
}
